package chen.yi.component.redis.config;

import cn.hutool.core.util.StrUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.nio.charset.Charset;

/**
 * redis key固定前缀序列化类
 * @author huat
 **/

public class PrefixRedisSerializer extends StringRedisSerializer {

    private final String KEY_PREFIX;//redis key前缀

    public PrefixRedisSerializer(String keyPrefix) {
        this.KEY_PREFIX = keyPrefix+":";
    }


    /**
     * 序列化
     *
     * @param s key
     * @return 结果
     */
    @Override
    public byte[] serialize(String s) {
        if (StrUtil.isBlank(s)) {
            return new byte[0];
        }
        // 这里加上你需要加上的key前缀
        String realKey = KEY_PREFIX + s;
        return super.serialize(realKey);
    }

    /**
     * 反序列化
     *
     * @param bytes 数据
     * @return 结果
     */
    @Override
    public String deserialize(byte[] bytes) {
        String s = bytes == null ? null : new String(bytes);
        if (StrUtil.isBlank(s)) {
            return s;
        }
        int index = s.indexOf(KEY_PREFIX);
        if (index != -1) {
            return s.substring(KEY_PREFIX.length());
        }
        return s;
    }
}
